package 剑指offer.demo1;//https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?

/**
 * 题目给了StringBuffer的定义，可以转成String进行数组分割后替换当然那样就没意思了，所以咱们直接操作
 */

public class 替换空格 {
    public String replaceSpace(StringBuffer str) {
        //循环字符串记录有几个空格
        int con = 0;//记录次数
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' '){
                con ++;
            }
        }
        //记录字符串长度并定义新的长度是原字符串+2倍的空格值
        int oldLength = str.length();
        int newLength = str.length() + 2 * con;
        //这俩长度是用来给字符串重新更新用的
        //重新设置字符串长度
        str.setLength(newLength);
        //把新元素定义到最后一个位置
        newLength--;
        //循环遍历字符串进行判断
        for (int i = oldLength - 1; i >= 0; i--) {
            if (str.charAt(i) == ' '){
                str.setCharAt(newLength-- , '0' );
                str.setCharAt(newLength-- , '2' );
                str.setCharAt(newLength-- , '%' );
            }
            else {
                str.setCharAt(newLength--, str.charAt(i));
            }
        }
        return str.toString();
    }
}
